#ifndef _sdl_exceptions_h_
#define _sdl_exceptions_h_

#include <stdexcept>
#include <string>
#include <sstream>

namespace sdlex {

    class exception : public std::exception {
    public:
        const std::string message;
        explicit exception(const std::string & a)throw ();
        virtual const char * what() const throw ();
        virtual ~exception() throw ();
    };

    class critical_extension_not_present : public exception {
    public:
        explicit critical_extension_not_present(const std::string & a)throw ();
        virtual ~critical_extension_not_present() throw ();
    };

    class SDL_exception : public exception {
    public:
        explicit SDL_exception(const std::string & a)throw ();
        virtual ~SDL_exception() throw ();
    };

    class bad_resource : public exception {
    public:
        explicit bad_resource(const std::string & a)throw ();
        virtual ~bad_resource()throw ();
    };

    typedef exception error;



};

#endif //_sdl_exceptions_h_

